package juego;
import exceptions.LaserException;
import graphic.ImageUtils;

import java.awt.Color;
import java.awt.Image;
import java.io.IOException;

/**
 * La clase Laser.
 * @author Daniel Goldberg, Maria Eugenia Cura.
 */
public class Laser{
	
	/** La rotacion. */
	protected int rotacion;
	
	/** El color. */
	protected Color color;
	
	/**
	 * Inicializa un nuevo laser.
	 * 
	 * @param rot la rotacion
	 * @param azul 
	 * @param verde
	 * @param rojo
	 * 
	 * @throws LaserException lanza una excepcion laser exception
	 */
	public Laser(int rot, int azul, int verde, int rojo) throws LaserException{
		if (rot<0|rot>3)
			throw new LaserException("El laser no puede tener rotacion mayor que 3 o menor a 0");
		this.rotacion=rot;
		try{
			this.color = new Color(rojo, verde, azul);
		}catch(IllegalArgumentException  e){}
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "|";
	}

	/**
	 * Dibuja el laser (devuelve una imagen del laser)
	 * 
	 * @return la imagen.
	 */
	public Image dibujar() {
		
		Image img1 = null, img2 = null;
		try {
			img1 = ImageUtils.loadImage("resources/laser.png");
			img2 = ImageUtils.replaceColor(img1, new Color(0, 0, 255), color);
		} catch (IOException e) {
			System.out.println("Error para cargar la imagen.");			
		}
		return ImageUtils.rotateImage(img2, rotacion);
	}
	
	/**
	 * Devuelve la rotacion del laser.
	 * 
	 * @return la rotacion
	 */
	public int getRotacion(){
		return rotacion;
	}

	/**
	 * Devuelve el color del laser.
	 * 
	 * @return el color
	 */
	public Color getColor() {
		return color;
	}

	/**
	 * Devuelve una nueva instancia de laser.
	 * 
	 * @param rot la rotacion
	 * @param blue 
	 * @param green
	 * @param red
	 * 
	 * @return una nueva instancia de laser
	 * 
	 * @throws LaserException tira una excepcion laser exception
	 */
	public Laser crearNuevo(int rot, int blue, int green, int red) throws LaserException {
		return new Laser(rot, blue, green, red);
	}
}